home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1995-12-11 | 2.1 KB | 63 lines |
- ' HAM image noise reduction and quantization to 32 colours.
- ' Written by Chris Hodges (09-Dec-95).
- ' Requires AMOS Pro and the AMCAF extension to run.
- '
- Set Buffer 40
- ' THRESHOLD sets the noise threshold.
- THRESHOLD=13
- Load Iff "dh1:grafik/dpaint/picture/misc/Claudia_Schiffer1.iff",0
- WX=Screen Width
- WY=Screen Height
- SM=Screen Mode
- ' Colour quantization to 32 different colours.
- Dim CO(4095)
- ' Count pixels
- For Y=0 To WY-1
- C=Colour(0)
- For X=0 To WX-1
- C= Extension_8_09E8( Extension_8_039E(X,Y),C)
- Inc CO(C)
- Next
- Next
- ' Change array contents a bit to allow sorting
- CO(0)=10000
- For A=0 To 4095
- CO(A)= Extension_8_0946(Min(CO(A),$FFFF))+A
- Next
- Sort CO(0)
- Screen Open 1,WX,WY,32,SM
- Curs Off : Flash Off : Paper 0 : Pen 1 : Cls
- For A=0 To 31
- Colour A,CO(4095-A) and $FFFF
- Next
- Screen 0
- For Y=0 To WY-1
- C00=Colour(0) : C10=C00 : C20=C00
- C01=C00 : C11=C01 : C21=C01
- C02=C00 : C12=C02 : C22=C02
- For X=-1 To WX-1
- If Y Then C20= Extension_8_09E8( Extension_8_039E(X+1,Y-1),C20) Else C20=Colour(0)
- C21= Extension_8_09E8( Extension_8_039E(X+1,Y),C21)
- If Y<WY-1 Then C22= Extension_8_09E8( Extension_8_039E(X+1,Y+1),C22) Else C22=Colour(0)
- V00= Extension_8_03B2(C00)+ Extension_8_03C0(C00)+ Extension_8_03D0(C00)
- V10= Extension_8_03B2(C10)+ Extension_8_03C0(C10)+ Extension_8_03D0(C10)
- V20= Extension_8_03B2(C20)+ Extension_8_03C0(C20)+ Extension_8_03D0(C20)
- V01= Extension_8_03B2(C01)+ Extension_8_03C0(C01)+ Extension_8_03D0(C01)
- V11= Extension_8_03B2(C11)+ Extension_8_03C0(C11)+ Extension_8_03D0(C11)
- V21= Extension_8_03B2(C21)+ Extension_8_03C0(C21)+ Extension_8_03D0(C21)
- V02= Extension_8_03B2(C02)+ Extension_8_03C0(C02)+ Extension_8_03D0(C02)
- V12= Extension_8_03B2(C12)+ Extension_8_03C0(C12)+ Extension_8_03D0(C12)
- V22= Extension_8_03B2(C22)+ Extension_8_03C0(C22)+ Extension_8_03D0(C22)
- V=V11*8-Sqr(V00*V00+V10*V10+V20*V20+V01*V01+V21*V21+V02*V02+V12*V12+V22*V22)
- Screen 1
- If V>THRESHOLD
- Extension_8_0388 X,Y, Extension_8_1504(C11)
- Else
- Extension_8_0388 X,Y,0
- End If
- Screen 0
- C00=C10 : C10=C20
- C01=C11 : C11=C21
- C02=C12 : C12=C22
- Next
- Next